package com.mashibing.api.advice;

import com.mashibing.api.util.R;
import com.mashibing.api.vo.ResultVO;
import com.mashibing.common.exception.ApiException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * @author SNA
 * @date 2025/7/15
 * @Description 该类 ApiExceptionHandler 会捕获所有 Controller 层抛出的异常，并可自定义统一的错误响应格式。
 **/
@RestControllerAdvice  // 是 Spring 的注解，用于定义全局异常处理器。
public class ApiExceptionHandler {

    /**
     * 处理ApiException异常的处理器方法
     * 用于捕获并处理由API引发的异常，以统一的格式响应给客户端
     *
     * @param ex ApiException实例，包含具体的异常信息
     * @return 返回一个ResultVO对象，封装错误信息
     */
    @ExceptionHandler(ApiException.class)
    public ResultVO apiException(ApiException ex) {
        return R.error(ex);
    }
}
